v7. Intercative plot with plotly offline, cufflinks offline, now for new file (6 months 2018 for cansol b305 )

Create all 5 plots from available data
In [1]:
import pandas as pd
import numpy as np
%matplotlib inline
from plotly import __version__
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
#print('plotly ver ',__version__) # requires plotly version >= 1.9.0

init_notebook_mode(connected=True)  # For Notebooks

import cufflinks as cf
#print('cufflinks ver ',cf.__version__)
# For offline use
cf.go_offline()
In [2]:
import matplotlib.pyplot as plt
import seaborn as sns
import datetime as dt
import matplotlib.dates as mdates
In [3]:
site = input('Enter site:')
block = input('Enter block:')
print("Got site={}, block={}".format(site,block))
Enter site:canadian_solar
Enter block:305
Got site=canadian_solar, block=305
In [4]:
#common part, read data from file
import plotly.graph_objs as go
p2b = '/mnt/data_log/'+ site +'/'  
# to get full path to folder with csv data, like '/mnt/data_log/aikawa/'
p2f = p2b + 'trends_'+site+'_'+'b'+block+'.csv'
df = pd.read_csv(p2f, names=['date', 'sn', 'var','value'], header=0)   # ['date', 'sn', 'var','value' ] # different format
#df['date'] = [dt.datetime.strptime(str(d),'%y%m%d').date() for d in df['date']]  
#convert dates from 180101 -> 2018-01-01 
In [5]:
df.head()
Out[5]:
date sn var value
0 2018-01-01 0716K000205 t_max -13.74
1 2018-01-01 0716K000205 t_avg -17.06
2 2018-01-01 0716K000205 p_max 16.29
3 2018-01-01 0716K000205 p_avg 8.04
4 2018-01-02 0716K000205 t_min -13.03
In [8]:
#t_min

data=[]
for sn in df['sn'].unique():
    dft_min=pd.DataFrame(columns=['date','value'])
    dft_min['date'] = df.loc[(df['var'] == 't_min') & (df['sn'] == sn) ]['date']
    dft_min['value'] = df.loc[(df['var'] == 't_min') & (df['sn'] == sn) ]['value']
    #dft_min.iplot(x='date', y='value',kind='scatter')
    data.append(go.Scatter(x=dft_min['date'],
                          y=dft_min['value'],
                          mode='lines',
                          name=str(sn),
                           opacity=0.3,
                           
                          )
               )
#https://plot.ly/python/figure-labels/
    layout=go.Layout(
    title='T min, C, for '+site+' block '+block,
    xaxis=dict(
        title='Date',
        titlefont=dict(
            family='Courier New, monospace',
            size=18,
            color='#7f7f7f'
        )
    ),
    yaxis=dict(
        title='Temperature, C',
        titlefont=dict(
            family='Courier New, monospace',
            size=18,
            color='#7f7f7f'
        )
    ),
    hovermode="closest"
)
fig = go.Figure(data=data, layout=layout)
iplot(fig)    
In [7]:
#t_avg

data=[]
for sn in df['sn'].unique():
    dft_avg=pd.DataFrame(columns=['date','value'])
    dft_avg['date'] = df.loc[(df['var'] == 't_avg') & (df['sn'] == sn) ]['date']
    dft_avg['value'] = df.loc[(df['var'] == 't_avg') & (df['sn'] == sn) ]['value']
    #dft_avg.iplot(x='date', y='value',kind='scatter')
    data.append(go.Scatter(x=dft_avg['date'],
                          y=dft_avg['value'],
                          mode='lines',
                          name=str(sn),
                           opacity=0.3,
                           
                          )
               )
#https://plot.ly/python/figure-labels/
    layout=go.Layout(
    title='T avg, C for '+site+' block '+block,
    xaxis=dict(
        title='Date',
        titlefont=dict(
            family='Courier New, monospace',
            size=18,
            color='#7f7f7f'
        )
    ),
    yaxis=dict(
        title='Temperature, C',
        titlefont=dict(
            family='Courier New, monospace',
            size=18,
            color='#7f7f7f'
        )
    ),
    hovermode="closest"
)
fig = go.Figure(data=data, layout=layout)
iplot(fig)    
In [9]:
#t_max

data=[]
for sn in df['sn'].unique():
    dft_max=pd.DataFrame(columns=['date','value'])
    dft_max['date'] = df.loc[(df['var'] == 't_max') & (df['sn'] == sn) ]['date']
    dft_max['value'] = df.loc[(df['var'] == 't_max') & (df['sn'] == sn) ]['value']
    #dft_max.iplot(x='date', y='value',kind='scatter')
    data.append(go.Scatter(x=dft_max['date'],
                          y=dft_max['value'],
                          mode='lines',
                          name=str(sn),
                           opacity=0.3,
                           
                          )
               )
#https://plot.ly/python/figure-labels/
    layout=go.Layout(
    title='T max, C for '+site+' block '+block,
    xaxis=dict(
        title='Date',
        titlefont=dict(
            family='Courier New, monospace',
            size=18,
            color='#7f7f7f'
        )
    ),
    yaxis=dict(
        title='Temperature, C',
        titlefont=dict(
            family='Courier New, monospace',
            size=18,
            color='#7f7f7f'
        )
    ),
    hovermode="closest"
)
fig = go.Figure(data=data, layout=layout)
iplot(fig)    
In [10]:
# For P max 

data=[]
for sn in df['sn'].unique():
    dft_max=pd.DataFrame(columns=['date','value'])
    dft_max['date'] = df.loc[(df['var'] == 'p_max') & (df['sn'] == sn) ]['date']
    dft_max['value'] = df.loc[(df['var'] == 'p_max') & (df['sn'] == sn) ]['value']
    #dft_max.iplot(x='date', y='value',kind='scatter')
    data.append(go.Scatter(x=dft_max['date'],
                          y=dft_max['value'],
                          mode='lines',
                          name=str(sn),
                           opacity=0.3,
                           
                          )
               )
#https://plot.ly/python/figure-labels/
    layout=go.Layout(
    title='P diss max, W for '+site+' block '+block,
    xaxis=dict(
        title='Date',
        titlefont=dict(
            family='Courier New, monospace',
            size=18,
            color='#7f7f7f'
        )
    ),
    yaxis=dict(
        title='P diss, W',
        titlefont=dict(
            family='Courier New, monospace',
            size=18,
            color='#7f7f7f'
        )
    ),
    hovermode="closest"
)
fig = go.Figure(data=data, layout=layout)
iplot(fig)    
In [11]:
# For P avg 

data=[]
for sn in df['sn'].unique():
    dft_avg=pd.DataFrame(columns=['date','value'])
    dft_avg['date'] = df.loc[(df['var'] == 'p_avg') & (df['sn'] == sn) ]['date']
    dft_avg['value'] = df.loc[(df['var'] == 'p_avg') & (df['sn'] == sn) ]['value']
    #dft_avg.iplot(x='date', y='value',kind='scatter')
    data.append(go.Scatter(x=dft_avg['date'],
                          y=dft_avg['value'],
                          mode='lines',
                          name=str(sn),
                           opacity=0.3,
                           
                          )
               )
#https://plot.ly/python/figure-labels/
    layout=go.Layout(
    title='P diss avg, W for '+site+' block '+block,
    xaxis=dict(
        title='Date',
        titlefont=dict(
            family='Courier New, monospace',
            size=18,
            color='#7f7f7f'
        )
    ),
    yaxis=dict(
        title='P diss, W',
        titlefont=dict(
            family='Courier New, monospace',
            size=18,
            color='#7f7f7f'
        )
    ),
    hovermode="closest"
)
fig = go.Figure(data=data, layout=layout)
iplot(fig)    
In [12]:
# from https://stackoverflow.com/questions/31855794/whats-the-best-way-to-share-jupyter-notebooks-with-non-programmers
!jupyter nbconvert trend_v7_for_b305.ipynb --to html
[NbConvertApp] Converting notebook trend_v7_for_b305.ipynb to html
[NbConvertApp] Writing 5778466 bytes to trend_v7_for_b305.html